// 定义组件
const Child = {
  template: `
  <div>我是{{name}}，有{{money}}元</div>
  <div><button @click="askMoneyByEmit">通过监听要钱</button></div>
  <div><button @click="askMoneyByMethod">通过方法要钱</button></div>
  <div><button @click="askMoneyByForce">通过抢钱的方式要钱</button></div>
  <div><button @click="askMoneyByBus">通过消息总线要钱</button></div>
  `,
  inject: ['$bus'],
  props: ['name', 'count', 'giveMoney'], // 用数组接收props
  emits: ['requestMoney'], // 用数组接收监听
  data() {
    return {
      money: 0
    };
  },
  methods: {
    askMoneyByEmit() {
      this.$emit('requestMoney', 100); // 通知父亲打钱
      this.money += 100; // 自己的钱增加100
    },
    askMoneyByMethod() {
      this.giveMoney(100); // 自己用父亲给的银行卡取钱
      this.money += 100; // 自己的钱增加100
    },
    askMoneyByForce() { // 不推荐用，因为会破环程序的健壮性
      this.$parent.money -= 100; // 让父亲的钱减少100
      // this.$parent.giveMoney(); // 让父亲的钱减少100
      this.money += 100; // 自己的钱增加100
    },
    askMoneyByBus() {
      this.$bus.emit('requestMoneyByBus', 100);
      this.money += 100;
    },
  }
};
